package com.itheima.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.dto.MidDto;
import com.itheima.dto.message.MessagePageDto;
import com.itheima.entity.Message;
import com.itheima.vo.message.MessageVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author 51585
* @description 针对表【message】的数据库操作Mapper
* @createDate 2022-10-09 18:59:54
* @Entity com.itheima.entity.Message
*/
@Mapper
public interface MessageMapper extends BaseMapper<Message> {

    /**
     * 分页展示信息
     * @param page
     * @param messagePageDto
     * @param userId
     * @return
     */
    IPage<MessageVo> pageMessage(@Param("page") Page page, @Param("messagePageDto") MessagePageDto messagePageDto, @Param("userId") String userId);

    /**
     * 分页展示个人信息
     * @param page 分页对象
     * @param messagePageDto 分页查看信息dto（按条件筛选）
     * @param userId 用户id
     * @return 返回信息vo
     */
    IPage<MessageVo> pagePersonalMessage(@Param("page") Page page, @Param("messagePageDto") MessagePageDto messagePageDto, @Param("userId") String userId);

    /**
     * 同步信息点赞数
     * @param list
     */
    void syncLikeMessage(@Param("list") List<Message> list);

    /**
     * 分页查询所有信息（管理员权限）
     *
     * @param page           分页对象
     * @param messagePageDto 分页查看信息dto（按条件筛选）
     * @return 返回信息vo
     */
    IPage<MessageVo> pageAllMessage(@Param("page") Page page, @Param("messagePageDto") MessagePageDto messagePageDto);

    /**
     * 统计每个用户发送新闻数
     *
     * @param userIdList 用户id集合
     * @return list
     */
    List<MidDto> totalNum(@Param("list") List<String> userIdList);

    /**
     * 统计每个用户收到的点赞数
     *
     * @param userIdList 用户id集合
     * @return list
     */
    List<MidDto> totalAcceptLikeCount(@Param("list") List<String> userIdList);
}




